import socket
import socketserver


class RequestHandle(socketserver.BaseRequestHandler):
    def handle(self):
        dx_conn = self.request  # 约等于TCP协议中的conn
        dx_addr = self.client_address  # 客户端地址

        print(dx_addr, "已上线")

        # 5.数据传输
        while True:
            try:
                redata = dx_conn.recv(1024)  # 一次性最大接受容量1024字节
            except:
                break
            redata = redata.decode('utf-8')
            print(f"{dx_addr}发来的数据：{redata}")
            if redata == 'q':
                break
            # 6.数据发送
            dx_conn.send('好的'.encode('utf-8'))

        # 7.关闭服务
        print(f'{dx_addr}退出连接！！！')
        dx_conn.close()


sk = socketserver.ThreadingTCPServer(("0.0.0.0", 5000), RequestHandle)
sk.serve_forever()  # 每获取一个连接对象都会启动一个线程去服务
